switch (state) {
    case "idle":
        if (distance_to_object(obj_player) < 120) state = "chase";
        break;

    case "chase":
        var dir = point_direction(x, y, obj_player.x, obj_player.y);
        x += lengthdir_x(1.5, dir);
        y += lengthdir_y(1.5, dir);
        if (distance_to_object(obj_player) > 200) state = "idle";
        if (distance_to_object(obj_player) < 24)  state = "attack";
        break;

    case "attack":
        // damage happens in step 4
        state = "chase";
        break;
}